Proposal by Rodrigo Bonifácio for Concurrency Architectures in Smalltalk

Proposed by Rodrigo Bonifácio (profile, biography) Don't forget to submit this proposal to official Google Melange site too!


How will I do that project

Since it is an advanced project, which will require a deeper understanding of concurrent models (Actors, Communicating Sequential Process, Transactional Memory, ...), we should start by examining those models as soon as possible. Then, after selecting the proper model(s) to implement, I think that we will be able to better understand the effort, challenges and risks to conduct this project, fixing both the project scope and development plan. In addition, due to the advanced nature of this project, we should proceed by developing with shot iterations and with an active communication channel.

What methodologies will I use

For the reasons presented above, I think that it would be interesting to follow an iterative approach for writing language extensions and interpreters. Iterative here means that we will split the project in small increments, where each increment, during the Development Phase, should focuses on a single language extension. It would also be interesting to design, implement, and test one language extension (or a small number of language constructs) on each iteration. Priory to the development phase, we need to spent some time planning the project, learning about concurrent models, and configuring our development environment. In this proposal I will use the term Initiation Phase to name this moment. Finally, after the development phase, we will work on publishing the project results (software packaging, tutorials, and so on). Depending on the challenges and contributions of this project, it
would be interesting to present the results on a conference. I will use the term Transition to denote this last phase. Regarding the project management approach, we could use the Scrum
methodology, creating a backlog with the language extensions that should be implemented. In addition, the project mentors could interchange the roles of Project Owner and Scrum Master; and the team could be formed by the students applying to this project.

Suggested timeline and milestones

Initiation Phase (deadline: 05/24)
Milestone

(a.1) Evaluate existing models for concurrency
(a.2) Precisely define the project goals and scope
(a.3) Create a backlog with the language extensions
(a.4) Create a development plan

Development Phase (deadline: 07/15)
Milestone for each development iteration (or sprint)

(b.1) Design language extensions
(b.2) Evolve the reference Smalltalk implementation for concurrency
(b.3) Test

Transition Phase (deadline: 08/09)
Milestone

(c.1) Language extensions available to the community, including software packaging, tutorials, and research papers.

Where I see the risks

The grater risk that I see is my low familiarity with Smalltalk. However, I am quite excited to work on this project and have already started to read books and tutorials related to this language as well as started to review some bibliography related to concurrency.

How the results will look like

The project is a success if it produces a reference framework (written in Smalltalk) for the support of concurrent architectures. Such a reference framework should provide one or more APIs for various concurrency concepts (e.g. message-passing or data-driven approaches) and it should be designed in the Smalltalk way of things to make it natural and easy to use
for a Smalltalk developer. The reference framework should also include an operational reference implementation which can be optimised using C libraries (e.g. using efficient OS resources like shared memory).

 




Updated: 9.4.2010